Tensorlistreserve

为张量列表(TensorList)预分配指定数量和形状的张量空间。该算子用于初始化TensorList结构,设置其内部张量的形状信息和TensorList本身的形状。

该算子不区分具体的数据类型,主要负责设置TensorList的元数据信息。

输入:
  • num_elements - TensorList中包含的张量数量(int类型)。

  • element_shape - 每个张量的形状数组(int*类型),表示TensorList中每个张量的维度信息。

  • shape_size - 每个张量的形状大小(int类型),即element_shape数组的长度。

  • tensor_list_c_element_shape_size - 输出参数,用于存储TensorList内部每个张量的形状大小(int*类型)。

  • tensor_list_c_element_shape - 输出参数,用于存储TensorList内部每个张量的形状(int*类型)。

  • tensor_c_shape_size - 输出参数,用于存储TensorList本身的形状大小(int*类型)。

  • tensor_c_shape - 输出参数,用于存储TensorList本身的形状(int*类型)。

输出:
  • tensor_list_c_element_shape_size - 被设置为shape_size的值。

  • tensor_list_c_element_shape - 被填充为element_shape的值。

  • tensor_c_shape_size - 被设置为1,表示TensorList本身是一个1维结构。

  • tensor_c_shape - 被设置为num_elements,表示TensorList包含num_elements个张量。

支持平台:

FT78NE MT7004

备注

  • 该算子不区分具体的数据类型,主要操作TensorList的元数据

  • TensorList中的每个张量必须具有相同的形状(element_shape)

  • 调用前需要确保tensor_list_c_element_shape和tensor_c_shape指向的内存空间足够大

共享存储版本:

void fp_tensorlist_reserve_s(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape, int core_mask) ;
void hp_tensorlist_reserve_s(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape, int core_mask) ;
void i32_tensorlist_reserve_s(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape, int core_mask) ;
void i16_tensorlist_reserve_s(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape, int core_mask) ;
void c64_tensorlist_reserve_s(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape, int core_mask) ;

C调用示例:

 1#include <stdio.h>
 2#include <tensorlistreserve.h>
 3
 4int main(int argc, char* argv[]) {
 5    int num_elements = 128;
 6    int element_shape[] = {8, 8, 16};
 7    int shape_size = 3;
 8    int tensor_list_c_element_shape_size = 0;
 9    int tensor_list_c_element_shape[MAX_SHAPE_SIZE];
10    int tensor_c_shape_size = 0;
11    int tensor_c_shape[MAX_SHAPE_SIZE];
12
13    //单核线性汇编
14    int core_mask = 0b1111; // 使用所有核心
15    fp_tensorlist_reserve_s(num_elements, element_shape, shape_size, &tensor_list_c_element_shape_size,
16    tensor_list_c_element_shape, &tensor_c_shape_size, tensor_c_shape, core_mask);
17    return 0;
18}

私有存储版本:

void fp_tensorlist_reserve_p(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape) ;
void hp_tensorlist_reserve_p(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape) ;
void i32_tensorlist_reserve_p(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape) ;
void i16_tensorlist_reserve_p(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape) ;
void c64_tensorlist_reserve_p(int num_elements, int *element_shape, int shape_size, int *tensor_list_c_element_shape_size,
int *tensor_list_c_element_shape, int *tensor_c_shape_size, int *tensor_c_shape) ;

C调用示例:

 1#include <stdio.h>
 2#include <tensorlistreserve.h>
 3
 4int main(int argc, char* argv[]) {
 5    int num_elements = 128;
 6    int element_shape[] = {8, 8, 16};
 7    int shape_size = 3;
 8    int tensor_list_c_element_shape_size = 0;
 9    int tensor_list_c_element_shape[MAX_SHAPE_SIZE];
10    int tensor_c_shape_size = 0;
11    int tensor_c_shape[MAX_SHAPE_SIZE];
12
13    //单核线性汇编
14    fp_tensorlist_reserve_p(num_elements, element_shape, shape_size, &tensor_list_c_element_shape_size,
15    tensor_list_c_element_shape, &tensor_c_shape_size, tensor_c_shape);
16    return 0;
17}